"""
property属性

定义property属性有两种方式：
    1.装饰器方式（常用）
    2.类属性方式

装饰器方式：
    1.@property 修饰获取属性的方法
    2.@方法名.setter 修饰设置属性的方法

类属性方式：
    1.property属性 = property(获取属性方法, 设置属性方法)
"""


class Person:

    def __init__(self, age):
        self.__age = age

    def get_age(self):
        """当获取age属性的时候会执行该方法"""
        return self.__age

    def set_age(self, value):
        """当设置age属性的时候会执行该方法"""
        if value >= 120:
            print("年龄错误")
        else:
            self.__age = value

    def del_age(self):
        """当删除age属性的时候会执行该方法"""
        del self.__age

    # 类属性方式的property属性
    age = property(get_age, set_age, del_age)


# 获取属性
p = Person(29)
print(p.age)
# 设置属性
p.age = 32
print(p.age)
